/**
 * This class controls the activitie among the checkoutline.
 * It's possible to get persons in and out of the line.
 * 
 * @author Michel Jansma, Stephan Veenstra 
 * @version (1.8)
 */

//Import util klasses voor het gebruiken van de ArrayList class !_TMP
import java.util.*;

public class CheckoutLine {

    //Instantie variabelen definiëren van het type Person
    private LinkedList<Person> line;

    /**
     * @method CheckoutLine
     * @params null
     * @info   Constructor van CheckoutLine class
     * @return null
     */
    public CheckoutLine() {
        //Instantie variabele line initialiseren
        this.line = new LinkedList<Person>();
    }

    /**
     * GETTER METHODES
     */
    
    /**
     * @method getCountLine
     * @params null
     * @info   retourneer aantal mensen in kassa rij
     * @return null
     */
    public int getCountLine() {
        return this.line.size();
    }
    
    /**
     * @method getLine
     * @params null
     * @info   Controleer of er personen in de rij staan
     * @return null
     */
    public boolean getLine() {
        return !this.line.isEmpty();
    }
    
    /**
     * @method addToLine
     * @params <Person> person
     * @info   voegt een persoon toe aan de kassarij
     * @return null
     */
    public void addToLine(Person person) {
        this.line.add(person);
        System.out.println(person.getFirstname() + " is als " + this.getCountLine() + "e persoon toegevoegd aan de rij van de kassa");
    }
    
    /**
     * @method removeFirstPersonLine
     * @params null
     * @info   verwijder eerste persoon uit kassa rij, mits er een kassa rij is
     * @return <Person> person
     */
    public Person removeFirstPersonLine() {
        //Wanneer de kassa rij niet leeg is
        if(!this.line.isEmpty()) {
            //Eerste persoon in kassa rij
            Person person = this.line.getFirst();
            //Verwijder eerste peroon in rij
            this.line.removeFirst();
            //System.out.println("Er staan nog " + this.getCountLine() + " personen in de rij");
            return person;
        }
        System.out.println("Er staat niemand in de rij");
        return null;
    }
}
